package com.hudilao.controller;

import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.hudilao.common.BaseContext;
import com.hudilao.common.R;
import com.hudilao.dto.OrderReviewDTO;
import com.hudilao.dto.OrderReviewDetailDTO;

import com.hudilao.service.OrderReviewService;
import com.hudilao.service.OrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@Slf4j
@RestController
@RequestMapping("/review/order")
public class OrderReviewController {
    @Autowired
    private OrderReviewService orderReviewService;

    @Autowired
    private OrderService orderService;


    /**
     * 用户端 用户添加评论
     * @param orderReviewDTO  include{orderId,reviewText,rating,dishReviews}
     * @return R<String> 评价结果
     */
    @PostMapping("/add")
    public R<String> add(@RequestBody OrderReviewDTO orderReviewDTO){
        log.info("评价信息",orderReviewDTO);
        //添加用户评论
        return orderReviewService.add(orderReviewDTO);
    }


    //管理端：评价管理
    /**
     * 分页查询订单评价或根据订单号查询
     * @param page 当前页
     * @param pageSize 每页大小
     * @param orderId 订单号（可选）
     * @return 分页结果或订单评价列表
     */
    @GetMapping("/em/page")
    public R<Object> getOrderReviewsOrByOrderId(
            @RequestParam int page,
            @RequestParam int pageSize,
            @RequestParam(required = false) Long orderId) {

        //订单评价查询
        Object result = orderReviewService.getOrderReviewsOrByOrderId(page, pageSize, orderId);
        log.info(String.valueOf(orderId));
        return R.success(result);
    }

    /**
     * 管理端：根据评价id查询评价详情
     * @param orderId 评价id
     * @return 评价详情
     */
    @GetMapping("/em/{orderId}")
    public OrderReviewDetailDTO getOrderReviewDetail(@PathVariable Long orderId) {

        //获取订单详情
        return orderReviewService.getOrderReviewDetailByReviewId(orderId);
    }


    /**
     * 管理端：根据评价id保存管理员回复
     * @param orderId 评价id
     */
    // 保存管理员回复
    @PostMapping("/em/{orderId}")
    public R<String> saveEmployeeReply(@PathVariable Long orderId, String employeeReply) {

        log.info(employeeReply);

        //保存订单回复
        orderReviewService.saveEmployeeReply(orderId, employeeReply);

        return R.success("回复成功");
    }

}
